package com.example.controller;

import cn.hutool.core.util.ObjectUtil;
import com.example.common.JwtTokenUtils;
import com.example.common.Result;
import com.example.entity.Admin;
import com.example.entity.Audit;
import com.example.entity.Params;
import com.example.service.AdminService;
import com.example.service.AuditService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/audit")
public class AuditController {

    private static final Logger log = LoggerFactory.getLogger(AuditController.class);

    @Autowired
    private AuditService auditService;


    // 审核信息查询： 超级管理员和教师可以看所有人；学生只能看自己的
    @GetMapping("/search")
    public Result findBySearch(Params params){
        //1.开启分页
        PageHelper.startPage(params.getPageNum(),params.getPageSize());

        // 入参时params不传userId：如果token中角色是学生，就给他一个自己的id； 如果不是学生，不管他，让他查所有。
        Admin user = JwtTokenUtils.getCurrentUser();
        if (ObjectUtil.isNotEmpty(user) && "ROLE_STUDENT".equals(user.getRole())){
            params.setUserId(user.getId());
        }

        //2.查询信息
        List<Audit> list = auditService.findBySearch(params); //不展示管理员的那条信息，用sql写
        //3.封装对象
        PageInfo<Audit> info = PageInfo.of(list);
        return Result.success(info);
    }

    @PostMapping
    public Result save(@RequestBody Audit audit){
        auditService.add(audit);
        return Result.success();
    }

    @DeleteMapping("/{id}")
    public Result del(@PathVariable Integer id){
        auditService.removeById(id);
        return Result.success();
    }
}

